ConcurrentHashMap 详解
private static final int MAXIMUM_CAPACITY = 1 << 30;
- MAXIMUM_CAPACITY是2的30次方 的原因`
- int的最大的值是2的31次方-1,所以容量无法到达2的31次方,
- 需要让容量满足2的幂次,所以设置为2的30次方
private static final int DEFAULT_CAPACITY = 16;
- DEFAULT_CAPACITY = 16;
- 方便数据迁移
- 方便进行计算对应的位置
- 概率统计
new ConcurrentHashMap<>(2); 自定义大小解释:
1 | public ConcurrentHashMap(int initialCapacity) { |
1 | // tableSizeFor的功能(不考虑大于最大容量的情况)是返回大于输入参数且最近的2的整数次幂的数。比如10,则返回16。 |